
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.gob.presidencia.cultura.espacios.busquedas;

import java.util.List;
import java.util.Map;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import sv.gob.presidencia.cultura.espacios.entidades.CArte;
import sv.gob.presidencia.cultura.espacios.entidades.CCategoriaEspacio;
import sv.gob.presidencia.cultura.espacios.entidades.CColeccionFondo;
import sv.gob.presidencia.cultura.espacios.entidades.Departamento;
import sv.gob.presidencia.cultura.espacios.entidades.EspacioColeccio;
import sv.gob.presidencia.cultura.espacios.entidades.Infraestructura;
import sv.gob.presidencia.cultura.espacios.entidades.Municipio;
import sv.gob.presidencia.cultura.espacios.entidades.Servicios;
import sv.gob.presidencia.cultura.espacios.entidades.TipoArteFormacion;
import sv.gob.presidencia.cultura.espacios.entidades.TipoEspacio;

/**
 *
 * @author edgardo
 */
@Stateless
public class BusquedasGen implements BusquedasGenLocal {
    @PersistenceContext(unitName = "sicEspaciosPU")
    private EntityManager em;

    
    public List<TipoEspacio> buscarTipoEsp(Map param)throws Exception{
        try {StringBuilder sql = new StringBuilder("SELECT t FROM TipoEspacio t WHERE 1 = 1");
            if(param.containsKey("nomcat")){
                sql.append(" AND t.cCategoriaEspacio.nombreCCategoria = :nomcat");
            }
        Query query = em.createQuery(sql.toString());
        if(param.containsKey("nomcat")){
                query.setParameter("nomcat",param.get("nomcat"));
            }
        List <TipoEspacio> x = query.getResultList();
            System.out.println("TipoEspacio :"+x.size());
            return x;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        
    } 

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")
    @Override
    public List<CCategoriaEspacio> buscarCatEsp(Map param) throws Exception{
        try {
            StringBuilder sql = new StringBuilder("SELECT c FROM CCategoriaEspacio c WHERE 1 = 1");
            if(param.containsKey("idcat")){
                sql.append(" AND c.idCCategoria = :idcate");
            }
            if(param.containsKey("nomcat")){
                sql.append(" AND c.nombreCCategoria = :nomcate");
            }
            if(param.containsKey("dsccat")){
                sql.append(" AND c.descripcionCCategoria = :dsccate");
            }
            Query query = em.createQuery(sql.toString());
             if(param.containsKey("idcat")){
               query.setParameter("idcate", param.get("idcat"));
            }
            if(param.containsKey("nomcat")){
                query.setParameter("nomcate", param.get("nomcat"));
            }
            if(param.containsKey("dsccat")){
                query.setParameter("dsccate", param.get("dsccat"));
            }
            List <CCategoriaEspacio> x = query.getResultList();
            System.out.println("categorias :"+x.size());
            return x;
        }  catch (NoResultException nre) {
            System.out.println("No hay nada en la tabla");
            return null;
        } catch (Exception e) {
            System.out.println("trono en buscarcatesp ejb");
            return null;
        }
        
    }
    
    public List<Departamento> buscarDepartamento(Map param)throws Exception{
        try {
            StringBuilder sql = new StringBuilder("SELECT t FROM Departamento t WHERE 1 = 1");
        Query query = em.createQuery(sql.toString());
        List <Departamento> x = query.getResultList();
            System.out.println("Departamento :"+x.size());
            return x;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        
    }
    
    public List<Municipio> buscarMunicipio(Map param)throws Exception{
        try {
            StringBuilder sql = new StringBuilder("SELECT t FROM Municipio t WHERE 1 = 1");
            if(param.containsKey("nomDpto")){
                sql.append(" AND t.idDepartamento.nombreDepartamento = :nomDpto");
            }
        Query query = em.createQuery(sql.toString());
        if(param.containsKey("nomDpto")){
                query.setParameter("nomDpto",param.get("nomDpto"));
            }
        List <Municipio> x = query.getResultList();
            System.out.println("Municipio :"+x.size());
            return x;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        
    }
    
    public List<CArte> buscarCArte(Map param)throws Exception{
        try {
            StringBuilder sql = new StringBuilder("SELECT t FROM CArte t WHERE 1 = 1");
        Query query = em.createQuery(sql.toString());
        List <CArte> x = query.getResultList();
            System.out.println("CArte :"+x.size());
            return x;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        
    }
    
    public List<CColeccionFondo> buscarCColeccionFondo(Map param)throws Exception{
        try {
            StringBuilder sql = new StringBuilder("SELECT t FROM CColeccionFondo t WHERE 1 = 1");
        Query query = em.createQuery(sql.toString());
        List <CColeccionFondo> x = query.getResultList();
            System.out.println("CColeccionFondo :"+x.size());
            return x;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        
    }
    public List<Infraestructura> buscarInfraestructura(Map param)throws Exception{
        try {
            StringBuilder sql = new StringBuilder("SELECT t FROM Infraestructura t WHERE 1 = 1");
        Query query = em.createQuery(sql.toString());
        List <Infraestructura> x = query.getResultList();
            System.out.println("Infraestructura :"+x.size());
            return x;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        
    }
    public List<Servicios> buscarServicios(Map param)throws Exception{
        try {
            StringBuilder sql = new StringBuilder("SELECT t FROM Servicios t WHERE 1 = 1");
        Query query = em.createQuery(sql.toString());
        List <Servicios> x = query.getResultList();
            System.out.println("Servicios :"+x.size());
            return x;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        
    }

}
